package com.jhgsys.internal.dict.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jhgsys.internal.common.entity.MenuTree;
import com.jhgsys.internal.common.entity.QueryRequest;
import com.jhgsys.internal.dict.dto.DictItemDto;
import com.jhgsys.internal.dict.entity.DictItem;

import java.util.List;

/**
 * 业务字典项 Service接口
 *
 * @author chenweihua
 * @date 2020-05-22 15:28:32
 */
public interface IDictItemService extends IService<DictItem> {
    /**
     * 查询（分页）
     * @author chenweihua
     * @date 2020-05-22 15:28:32
     * @param request QueryRequest
     * @param dictItem dictItem
     * @return IPage<DictItem>
     */
    IPage<DictItem> findDictItems(QueryRequest request, DictItem dictItem);

    /**
     * 查询（所有）
     * @author chenweihua
     * @date 2020-05-22 15:28:32
     * @param dictItem dictItem
     * @return List<DictItem>
     */
    List<DictItemDto> findDictItems(DictItem dictItem);

    /**
     * 根据ID查询
     * @author chenweihua
     * @date 2020-05-22 15:28:32
     * @param id
     * @return DictItem
     */
    DictItem findDictItemById(String id);

    /**
     * 新增
     * @author chenweihua
     * @date 2020-05-22 15:28:32
     * @param dictItem dictItem
     */
    void createDictItem(DictItem dictItem);

    /**
     * 修改
     * @author chenweihua
     * @date 2020-05-22 15:28:32
     * @param dictItem dictItem
     */
    void updateDictItem(DictItem dictItem);

    /**
     * 逻辑删除
     * @author chenweihua
     * @date 2020-05-22 15:28:32
     * @param dictItem dictItem
     * @param dictItemIds dictItemIds
     */
    void deleteDictItem(DictItem dictItem,String dictItemIds);

    /**
     * 物理删除
     * @author chenweihua
     * @date 2020-05-22 15:28:32
     * @param dictItemIds dictItemIds
     */
    void physicallyDeleteDictItem(String dictItemIds);

    void saveDictItemBatch(List<DictItem> dictItems);

    void deleteByDictCode(String dictCode);


    /**
     * 获取部门树（总会fta用户列表使用）
     * @return
     */
    List<MenuTree<DictItem>> findDictes();

    /**
     * 根据item_id查询
     * @return
     */
    List<DictItem> findByItemIds(List<String> itemIds);
}
